// let obj = {
//     num1: 117
// }
// let res = obj;
// obj.child = obj = { num2: 935 };
// var x = y = res.child.num2;
// console.log(obj.child);
// console.log(res.num1);
// console.log(y);


// var a, b;
// (function () {
//     console.log(a);
//     console.log(b);
//     var a = b = 3;    // var a = 3  b = 3   a被重新声明，b赋值，b为全局变量   作用域内的a与全局a不是同一个a，
//     console.log(a);
//     console.log(b);
// })();
// console.log(a); // undefined
// console.log(b); // 3


// var arr = []
// for (var i = 0; i < 5; i++) {
//     var obj = {}
//     arr.push(obj)
// }
// console.log(arr)
// for (var i = 0; i < arr.length; i++) {
//     arr[i].age = i
//     arr[i].tool = function () { console.log(i) }
// }
// console.log(arr[2].age)
// arr[3].tool()



// var a = 1
// {
//     function a() { }
//     a = 2
//     function a() { }
//     a = 3
//     function a() { }
//     a = 4
//     console.log('内部a:' + a);
// }
// console.log('外部a:' + a);



// var a = function () { console.log(2) };
// function a() { console.log(1) };
// a();



// var a = 'w'
// let obj = {
//     a: 'o',
//     print: function () {
//         console.log(this.a);
//         return console.log(111)
//     },
//     print2: () => {
//         console.log(this.a);
//     }
// }
// let p = obj.print;
// p()


// var name = "World!";
// (function () {
//     var name;
//     if (typeof name === 'undefined') {
//         name = 'Jack';
//         console.log('Goodbye' + name);
//     }
//     else {
//         console.log('hello' + name);
//     }
// })();
// console.log(typeof name === 'undefined')


// var msg = 'hello';
// for (var i = 0; i < 10; i++) {   
//     var msg = 'hello' + i * 2 + i;
// }
// console.log(msg);



// var f = function g() {
//     console.log(111)
//     return 23;
// };
// console.log(f())  
// typeof g();


// let foo = { n: 1 };
// let foo1 = { n: 2 };
// (function (foo) {
//     console.log(foo.n);
//     foo.n = 3;
//     var foo = { n: 2 };
//     console.log(foo.n);
// })(foo1);
// console.log(foo1);


// var foo = { bar: 1 }; // 
// var arr1 = [1, 2, foo];// 
// var arr2 = arr1.slice(1);// arr2 = [2,{bar:1}]
// arr2[0]++; //   [2,bar:1]
// arr2[1].bar++; // [2,bar:2]
// foo.bar++; //   {bar:3}
// arr1[2].bar++; // {bar:4}
// console.log(arr1[1] === arr2[0]); //false
// console.log(arr1[2] === arr2[1]); //true
// console.log(foo.bar); // 4


// var len = 117;
// let func = {
//     len: 935,
//     showLen: function () {
//         console.log(this.len);
//     },
//     show: function () {
//         (function (cb) {
//             cb();
//         })(this.showLen)
//     }
// }
// func.show();


// function A(x) {
//     this.x = x;
// }
// A.prototype.x = 1;
// function B(x) {
//     this.x = x;
// }
// B.prototype = new A();
// var a = new A(2), b = new B(3);
// delete b.x;
// console.log(a.x);            
// console.log(b.x);



// let x = 10;
// let foo = () => {
//     console.log(x);
//     let x = 20;
//     x++;
// }
// foo();



// var user = {
//     count: 1,
//     getCount: function () {
//         return this.count;
//     }
// }
// var func = user.getCount
// console.log(func())



// var arr = [2, 1, 3, 5, 9];
// var count = 0;
// arr.forEach((val1, val2) => {
//     count++;
//     if (count % 3 == 0) {
//         return;
//     }
//     console.log(val1);
// })



// function Person(age) {
//     this.age = age;
// }
// Person.prototype = {
//     constructor: Person,
//     getAge: function () {
//         console.log(this.age)
//     },
// }
// var ldh = new Person(24);
// Person.prototype.age = 18;
// Object.prototype.age = 20;
// ldh.getAge();

